package club.xyes.zkh.ecommerce.service;

import club.xyes.zkh.ecommerce.commons.entity.Shop;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * Create by 郭文梁 2019/4/16 0016 18:07
 * ShopService
 * 商铺相关业务服务组件
 *
 * @author 郭文梁
 * @data 2019/4/16 0016
 */
public interface ShopService extends BaseService<Shop> {
    /**
     * 设置店铺logo
     *
     * @param id       店铺ID
     * @param logoFile logo图片文件
     * @return Shop
     * @throws IOException IOE
     */
    Shop setLogo(Integer id, MultipartFile logoFile) throws IOException;

    /**
     * 用户创建商铺
     *
     * @param shop 商铺参数
     * @return Shop
     */
    Shop create(Shop shop);

    /**
     * 设置商铺促销图片
     *
     * @param shop               商铺
     * @param promotionImageFile 促销图片
     * @return Shop
     * @throws IOException IO异常
     */
    Shop setPromotionImage(Shop shop, MultipartFile promotionImageFile) throws IOException;

    /**
     * 商家登录
     *
     * @param loginName 登录名
     * @param password  密码
     * @param code      微信Code
     * @return Shop
     */
    Shop login(String loginName, String password, String code);

    /**
     * 重置商铺登录密码
     *
     * @param shop     商铺
     * @param password 密码
     * @return Shop
     */
    Shop resetPassword(Shop shop, String password);

    /**
     * 通过登录名查询
     *
     * @param loginName 登录名
     * @return shop
     */
    Shop findByLoginName(String loginName);

    /**
     * 通过登录名判断商铺是否存在
     *
     * @param loginName  登录名
     * @param excludeIds 排除的Id列表
     * @return 是否存在
     */
    boolean existsByLoginName(String loginName, List<Integer> excludeIds);

    /**
     * 通过微信小程序Code登录
     *
     * @param code code
     * @return GR
     */
    Shop loginByCode(String code);

    /**
     * 通过微信OpenId登录
     *
     * @param openId openID
     * @return Shop
     */
    Shop loginByOpenId(String openId);

    /**
     * 通过SN查询商铺信息
     *
     * @param sn SN
     * @return 商铺信息
     */
    Shop findBySn(String sn);
}
